perm filename PASC.PAS[S1,ALS] blob
sn#408347 filedate 1979-01-05 generic text, type C, neo UTF8
COMMENT ā VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 (*PROGRAM HEADER PAGE*)
C00005 00003 program CHIOPASC(OUTPUT)
C00007 ENDMK
Cā;
(*PROGRAM HEADER PAGE*)
(*PAS10 OPTIONS*) (* D+,R32,S1300*) (*X10S1*)
(* DEFAULT
D+ DEBUG AND POSTMORTEM DUMP -
E+ EXTERNAL CALLS TO LEVEL 1 PROCEDURES ALLOWED -
Fn FILE OPTION 1
I+ FORTRAN I/O IN EXTERNAL FORTRAN SUBROUTINES -
L+ OBJECT LISTING -
Rn SIZE OF LOW-SEGMENT (SEE PAS10 MANUAL)
Sn MAX INSTRUCTIONS PER STATEMENT 1000
T+ RUNTIME CHECK +
U+ 72 COLUMN FORMAT -
Xn HIGHEST REGISTER FOR PARAMETERS 6
*)
(*SLAC PCPASC OPTIONS*) (* B+,D+,M-*)
(* DEFAULT
A+ GENERATE 370 OBJECT MODULE -
A- GENERATE 370 ASSEMBLY MODULE
B+ BOUNDS CHECKING, BUT ALLOW 'BIG' CHARACTERS -
C+ EMIT PCODE +
D+ RUNTIME CHECKING OF POINTER, INDEX, SUBRANGE VALUES -
E+ FILE IS IN EBCDIC CHARACTER SET -
F+ SAVE FPR'S ON PROCEDURE/FUNCTION ENTRY +
K+ ENABLE STATEMENT EXECUTION COUNTING -
L+ LIST SOURCE PROGRAM +
M+ 72 COLUMN FORMAT +
P+ DOUBLE-WORD BOUNDARY ALIGNMENT -
S+ SAVE GPR'S ON PROCEDURE/FUNCTION ENTRY +
T+ PRINT SYMBOL TABLES (FOR POST-PROCESSOR) -
U+ GET STATISTICS?? 2ND PARAMETER TO PCODE BGN INSTR. -
V+ ?? 3RD PCODE BGN INSTRUCTION PARAMETER -
X+ USE ACTUAL PROCEDURE NAMES FOR EXTERNAL REFERENCES -
X- GENERATE UNIQUE 8-CHAR NAMES FOR EXTERNAL REFERENCES
*)
(*S1 PCPASC OPTION DIFFERENCES*) (*$A+,B+,D+,L-,M120*) (*X10S1*)
(* DEFAULT
A+ GENERATE S1 ASSEMBLY MODULE -
A- GENERATE S1 OBJECT MODULE
*)
(* SLAC/PDP-10 TRANSPORT DEPENDENCIES FLAGGED WITH "XSL10" *)
(* PDP-10/S-1 TRANSPORT DEPENDENCIES FLAGGED WITH "X10S1" *)
program CHIOPASC(OUTPUT);
const NROW=32; TWONROWM1=63;
NCOL=71;
MODULUS=2; MODM1=1;
var I, R, LLIM, RLIM, MCOL : integer;
MODROW : array [1..TWONROWM1] of 0..MODM1;
MODCHAR : array [0..MODM1] of char;
begin
MODCHAR[0] := ' '; MODCHAR[1] := '*';
WRITELN(OUTPUT,'CHIOPASC OUTPUT');
for R := 0 to NROW-1 do
begin
WRITE(' ');
LLIM := NROW - R;
RLIM := NROW + R;
MODROW[LLIM] := 1; MODROW[RLIM] := 1;
I := LLIM + 2;
while I <= RLIM-2 do
begin
MODROW[I] := (MODROW[I-1]+MODROW[I+1]) mod MODULUS;
I := I + 2
end;
MCOL := (NCOL+1) div 2 + R;
if MCOL > NCOL then MCOL := NCOL;
for I := 1 to MCOL do
if I < (NCOL+1) div 2 - R then WRITE(' ')
else if odd((NCOL+1) div 2 - I + R) then WRITE(' ')
else WRITE(MODCHAR[MODROW[NROW-((NCOL+1) div 2 - I)]]);
WRITELN(OUTPUT)
end
end.